home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS in a Box 7
/
BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso
/
Files
/
Prog
/
T
/
ThP301.cpt
/
ThP 3.0.1_TCL Online Update
< prev
Wrap
Text File
|
1990-05-15
|
8KB
|
246 lines
THINK PASCAL 3.0.1/TCL ONLINE UPDATE PACKAGE
============================================
5/15/90
INTRODUCTION
============
This update package corrects some bugs in THINK Pascal 3.0 and some
minor bugs in the Pascal version of the THINK Class Library.
WHAT’S IN THE UPDATE PACKAGE
============================
This update package contains an applications that updates your existing
THINK Pascal 3.0 to THINK Pascal 3.0.1 and a folder that contains files
to update the THINK Class Library.
• All THINK Pascal 3.0 users should update to
THINK Pascal 3.0.1.
• All THINK Pascal 3.0 users who use the
THINK Class Library should apply the TCL Update.
The sections that follow tell you how to update THINK Pascal and the
THINK Class Library and what bugs the updates fix.
THINK PASCAL 3.0.1 UPDATE
=========================
This update transforms your existing THINK Pascal 3.0 application
to THINK Pascal 3.0.1.
Installing the Update
---------------------
0. Make sure that you have your original THINK Pascal
application. You won't need it for this update, but you
should make sure that you have a backup in case the update
fails.
1. Double-click on the patch program THINK Pascal -> 3.0.1 to
launch it. Click on the Update THINK Pascal button to continue.
2. Find your existing copy of THINK Pascal in your THINK Pascal
Folder. Select it and click on the Patch button.
If you use a virus intercept program, such as SAM, it may warn
you that THINK Pascal -> 3.0.1 is modifying code resources.
Allow these changes.
What This Update Changes
------------------------
These are the bugs fixed in version 3.0.1:
• If a PACKED ARRAY OF Boolean had a lower bound which was not
modulo 8, the wrong bit in the array would be stored and fetched.
For example:
VAR
bits : PACKED ARRAY [0..15] OF Boolean;
worked OK, whereas
VAR
bits : PACKED ARRAY [1..16] OF Boolean;
did not.
• An attempt to store a non-immediate value to an element of a
PACKED ARRAY OF Boolean would result in a bit being changed
in random memory if the value was FALSE:
bits[4] := TRUE; { worked }
bits[4] := FALSE; { worked }
bits[4] := bool; { worked if bool was TRUE, failed }
{ if bool was FALSE. }
• Attempting to use an element of a PACKED ARRAY OF Boolean as an
argument to one of the intrinsic bit-manipulation functions
(BAND, BOR, etc) crashed the compiler. This happened most often
in code ported from THINK Pascal 2.0 which dealt with variables
of type KeyMap. KeyMaps were previously arrays of four LongInts,
so it was necessary to BAND an element of a KeyMap with a mask
value to test the desired bit.
•• IMPORTANT
Although the compiler will no longer crash, the result
from BAND(myKeyMap[n], m) will NOT be the result
you're looking for. You should just perform a Boolean
test on the required element of the KeyMap.
• When using an object-type result of a method function call as the
target of a WITH statement, incorrect code was generated. For
example:
WITH MethodFunc(args) DO
ResultsMethod(moreArgs);
The result of MethodFunc was not properly removed from the stack
before pushing moreArgs and calling ResultsMethod. This error usually
caused a bus error or method not found.
• When indexing a multidimensional array whose aggregate size was >32K
with an immediate index, the wrong code would be generated if the
column offset was less than 32K into the column, but greater than 32K
into the array.
Consider:
TYPE BigArray = array[1..7, 1..648] of Double;
PBigArray = ^BigArray;
var
pb : PBigArray;
...
pb^[7, 209] := PI; { 209 is within 32K of pb^[7], but }
{ greater than 32K away from pb^[1].}
• Havoc would ensue if a program attempted to call LoadSeg on a
segment which was already loaded and locked in memory. An example
of this behavior is the PreloadSegment routine found in
MacApp versions later than 2.0b10.
• Occasionally, THINK Pascal would get confused and believe that the
Instant and Observe windows had been checked out from Projector
read-only, which precluded typing anything into them.
THINK CLASS LIBRARY UPDATE
==========================
This update fixes some minor bugs in the THINK Class Library.
This update uses a program called AutoWeave to create new TCL source files
from your existing files. It applies a set of "differences" files to the
original THINK Class Library source files that came with your THINK Pascal
package to create new updated source files.
There are two things to watch out for:
• The AutoWeave program assumes that you have not changed
how the THINK Class Library source files are organized.
All of the TCL source files should be a folder called
THINK Class Library which should contain two folders called
Core Classes and More Classes. The Starter and TinyEdit
demos should be in a folder called TCL Demos, and the
Art Class demo should be in a folder called Art Class Folder.
• If you modified any of the original source files, you
should move them to a different folder or rename them.
Otherwise, the AutoWeave program will replace them with
updated versions, and your changes will be lost.
INSTALLING THE UPDATE
---------------------
•• Please read these instructions before you begin.
0. Be sure that you have your original disk THINK Pascal 2 from your
THINK Pascal 3.0 package. Make sure the disk is write-protected.
1. Double-click on the file named "TCL Update.Script" to launch
the AutoWeave program.
2. The AutoWeave program will ask you to locate the original "THINK
Class Library" folder. Insert your THINK Pascal 2 disk in the
floppy drive, choose the folder "THINK Class Library" and click OK.
3. The AutoWeave program will ask you to locate your copy of the
"THINK Class Library" folder. If you followed the installation
instructions in your THINK Pascal 3.0 User's Manual, this folder
is in your THINK Pascal Folder.
4. The AutoWeave program will ask you to locate the "TCL Diffs"
folder. This folder is supplied as part of this update.
Select this folder and click OK.
5. The AutoWeave program will now modify the appropriate files,
keeping you informed of its progress. When it has finished,
you may want to check one or two of the files, to make sure
that everything worked. (For example, if you chose the
wrong Diffs folder in step 4, the Weaver wouldn't actually
do anything, although it might act like it did.)
To update the TCL Demos double-click on the file "TCL Demos Update.Script"
and follow the instructions above.
To update the Art Class demo, double-click on the file "Art Class Update.Script"
and follow the instructions. The original Art Class Folder is on disk
THINK Pascal 3
WHAT’S IN THE UPDATE
--------------------
1. CBartender.p
ParseItemString now initializes cmdStr to nullStr.
2. CButton.p
IButton now adjusts hEncl and vEncl to account for its enclosure's
origin.
3. CEditText.p
Modified DoClick to fix activation problem with multiple EditText
fields within a pane.
4. CError.p
SevereMacError method: the errMsg handle is now initialized properly.
MissingResources method: now uses GetOSEvent to wait for mouseDown
or keyDown.
5. CPane.p
FrameToGlobalR method has been corrected. (Warning: this method
doesn't work if the window is not visible.)
6. CResFile.p
Open method now calls HOpenResFile instead of HOpenRF.
7. CWindow.p
FrameToGlobalR method has been corrected. (Warning: this method
doesn't work if the window is not visible.)
8. The TCL no longer passes object instance variables to the NEW procedure.
This used to cause problems with Heap Scramble on
TCL files changed:
CApplication.p
CBitMapPane.p
CCharGrid.p
CClipboard.p
CDesktop.p
CDocument.p
CRadioGroup.p
CScrollPane.p
CFWDesktop.p
CTearOffMenu.p
CView.p
TCL Demo files changed:
CStarterDoc.p
CEditDoc.p
CAboutBox.p
CArtClassApp.p
CArtClassDoc.p
CPaintPane.p
CPaintTask.p
CToolPens.p
CToolText.p